package com.gbas.model;


import java.util.Collection;
import java.util.Collections;
import java.util.Random;
import java.util.Vector;

/**
 * User: t50
 * Date: 07-abr-2010
 * Time: 23:39:42
 */
public class Mazo extends Vector<Naipe> {
    public static Random rd = new Random(System.currentTimeMillis());


    public Mazo() {
        super(40);

        generarTodasBreve();
    }

    public void generarTodas() {
        PALO palos[] = {PALO.OROS, PALO.COPAS, PALO.ESPADAS, PALO.BASTOS};
        VALOR valores[] = {VALOR.AS, VALOR.DOS, VALOR.TRES, VALOR.CUATRO, VALOR.CINCO, VALOR.SEIS, VALOR.SIETE, VALOR.OCHO, VALOR.NUEVE, VALOR.SOTA, VALOR.CABALLO, VALOR.REY};

        for (PALO p : palos) {
            for (VALOR v : valores) {
                addNaipe(new Naipe(v, p));
            }
        }
    }

    public void generarTodasBreve() {
        PALO palos[] = {PALO.OROS, PALO.COPAS, PALO.ESPADAS, PALO.BASTOS};
        VALOR valores[] = {VALOR.AS, VALOR.DOS, VALOR.TRES, VALOR.CUATRO, VALOR.CINCO, VALOR.SEIS, VALOR.SIETE, VALOR.SOTA, VALOR.CABALLO, VALOR.REY};

        for (PALO p : palos) {
            for (VALOR v : valores) {
                addNaipe(new Naipe(v, p));
            }
        }
    }

    public Naipe getNaipe() {
        if (elementData.length > 0) {
            Naipe np = (Naipe) elementData[0];
            remove(np);
            return np;
        } else {
            return null;
        }
    }

    public Naipe peekNaipe(int pos) {
        if (elementData.length > 0) {
            return (Naipe) elementData[pos];
        } else {
            return null;
        }
    }

    public void addNaipe(Naipe obj) {
        super.addElement(obj);
    }


    public void mezcla() {
        Collections.shuffle(this, rd);
    }

    public void addNaipes(Collection<? extends Naipe> naipesDescartados) {
        super.addAll(naipesDescartados);
    }
}